Gaussian Copula Generation
Gaussian copula generation is a way to generate multivariate synthetic data when each variable can have its own marginal distribution, but the dependency between variables is controlled by a Gaussian correlation structure.
The key idea:
- sample correlated Gaussian variables
- convert them to uniform variables by the Gaussian CDF
- convert each uniform variable to the target distribution by that variable's inverse CDF
So the Gaussian copula separates:
- marginal distribution: what each variable looks like alone
- dependency structure: how variables move together
What is a copula
A copula is a function/model that links individual marginal distributions into a joint multivariate distribution. In simple terms, it describes the dependency between variables separately from what each variable's own distribution looks like.
What problem does it solve
Often we want to simulate variables that are dependent, but not all normally distributed.
Example:
- age may be approximately continuous and skewed
- biomarker values may be log-normal
- disease status may be binary
- healthcare cost may be highly right-skewed
A plain multivariate normal model is too restrictive because it assumes all variables are Gaussian. A Gaussian copula lets us keep flexible marginals while still specifying a correlation matrix.
Intuition
Think of Gaussian copula as generating the rank-level dependency first.
- Start with hidden correlated Gaussian variables
- Turn them into percentiles between 0 and 1
- Map those percentiles into whatever marginal distributions we want
So if two hidden Gaussian variables are positively correlated, high percentiles in one variable tend to appear with high percentiles in the other variable.
Generation steps
Suppose we want to generate
1. Specify a correlation matrix
Choose a valid correlation matrix
This controls the dependency structure. See Covariance & Correlation and Covariance Structure.
2. Sample from a multivariate normal distribution
Generate latent Gaussian variables:
Here, each
3. Convert Gaussian values to uniform values
Apply the standard normal CDF
Then:
The values are now percentiles, but still dependent.
4. Convert uniforms to target marginals
For each target variable with CDF
Then
Example:
Compact formula
The full transformation is:
where:
: Gaussian correlation matrix : standard normal CDF : inverse CDF of the target marginal distribution
Why it is useful
- Generate synthetic data with realistic dependency
- Simulate non-normal variables jointly
- Separate marginal modeling from dependency modeling
- Useful in risk modeling, health data simulation, finance, and sensitivity analysis
Limitations
- The dependency is still Gaussian-like, so it may miss tail dependence
- The input correlation matrix must be valid / positive semi-definite
- Correlation after transformation may not exactly equal the original
- Discrete variables can create ties and make correlation harder to control
Gaussian copula is not saying the observed variables are Gaussian. It only uses a hidden Gaussian layer to create dependency.